package com.JavaBasic;

public class SingleTonDemo {

}

// 单利的第一种写法 (饿汉模式 推荐)
class SingleTon {
	// 私有构造方法
	private SingleTon() {}
	
	// 内部生成单利对象
	private static SingleTon singleTon = new SingleTon();
	
	// 提供获取单利对象方法
	public static SingleTon getInstance() {
		return singleTon;
	}
}

// 单利第二种写法 (饿汉模式)
class SingleTon2 {
	// 私有构造方法
	private SingleTon2() {}
	
	// 单利对象,不允许修改
	public final SingleTon2 singleTon = new SingleTon2();
	
}

// 单利的第三种写法 (懒汉模式 不推荐)
class SingleTon3 {
	// 私有构造方法
	private SingleTon3() {}
	
	// 单利对象,默认是null
	private static SingleTon3 singleTon;
	
	// 获取单利对象方法,线程不安全
	public static SingleTon3 getInstance() {
		if (singleTon == null) {
			singleTon = new SingleTon3();
		}
		
		return singleTon;
	}
}

